//package com.dreamwhale.machinery.pay.ali.server;
//
//import org.springframework.stereotype.Service;
//
///**
// * @description:微信支付JAVA-SDK: APP支付,退款
// * @author:小黑
// */
//@Service
//public class WechatPayService {
//
//
//    /************ 微信开放平台配置  ***************/
//
//    /** APPID */
//    private static final String APPID = "";
//
//    /** 商户号 */
//    private static final String MCH_ID = "";
//
//    /** 密钥 */
//    private static final String PRIVATE_KEY = "";
//
//    /** 用户订单支付结果异步通知url */
//    private static final String NOTIFY_URL = "";
//
//    /** 商户支付证书路径 */
//    private static final String API_CLIENT_CERT_PATH = "";
//
//    // 加载商户支付证书文件;
//    static {
//        LocalHttpClient.initMchKeyStore(MCH_ID, API_CLIENT_CERT_PATH);
//    }
//
//    /**
//     * @description:使用微信支付-APP支付方式-统一下单;
//     * @return 支付参数,如果支付失败则返回null
//     * @author:Fanhaojian
//     */
//    public MchPayApp orderAppPay(PayLog payLog) {
//
//        Unifiedorder unifiedorder = new Unifiedorder();
//
//        /** APPID */
//        unifiedorder.setAppid(APPID);
//
//        /** 商户号 */
//        unifiedorder.setMch_id(MCH_ID);
//
//        /** 随机字符串 */
//        unifiedorder.setNonce_str(UUID.randomUUID().toString().replaceAll("-", ""));
//
//        /** 商品描述 */
//        unifiedorder.setBody(payLog.getPayCode());
//
//        /** 商户订单号 */
//        unifiedorder.setOut_trade_no(payLog.getPayCode());
//
//        /** 订单总金额 */
//        unifiedorder.setTotal_fee(payLog.getPayPrice().multiply(new BigDecimal(100)).intValue() + "");   // 订单总金额,单位为分;
//
//        /** 用户端请求IP地址 */
//        unifiedorder.setSpbill_create_ip(IpUtils.getClientIp());
//
//        /** 异步通知回调地址 */
//        unifiedorder.setNotify_url(NOTIFY_URL);
//
//        /** 交易类型 */
//        unifiedorder.setTrade_type("APP");
//
//        LOGGER.warn("微信APP支付--(签名前):" + XMLConverUtil.convertToXML(unifiedorder));
//
//        /** 获取签名 */
//        UnifiedorderResult unifiedorderResult = PayMchAPI.payUnifiedorder(unifiedorder, PRIVATE_KEY);
//
//        LOGGER.warn("微信APP支付--支付统一下单接口请求状态(return_code):" + unifiedorderResult.getReturn_code());
//        LOGGER.warn("微信APP支付--支付统一下单接口请求状态(return_msg):" + unifiedorderResult.getReturn_msg());
//        LOGGER.warn("微信APP支付--支付统一下单接口请求状态(result_code):" + unifiedorderResult.getResult_code());
//        LOGGER.warn("微信APP支付--支付请求参数封装(签名后):" + XMLConverUtil.convertToXML(unifiedorder));
//        LOGGER.warn("微信APP支付--支付统一下单接口返回数据:" + FastJSONUtils.getJsonHelper().toJSONString(unifiedorderResult));
//
//        // 下单结果验签;
//        if(unifiedorderResult.getSign_status() != null && unifiedorderResult.getSign_status()) {
//            LOGGER.warn("微信APP支付验签成功");
//            return PayUtil.generateMchAppData(unifiedorderResult.getPrepay_id(), APPID, MCH_ID, PRIVATE_KEY);
//        }
//        return null;
//    }
//
//    /**
//     * @description:微信退款业务封装(支付押金退还);
//     * @param 　 PayLog order:支付订单信息
//     *           Double refundAmount:退款金额
//     * @return 微信退款接口返回数据  true 退款成功  false 退款失败
//     * @author:FanHaoJian
//     */
//    public Boolean refundOrder(PayLog order, Double refundAmount) {
//
//        // 调用微信支付退款接口;
//        SecapiPayRefund payRefund = new SecapiPayRefund();
//        payRefund.setAppid(APPID);
//        payRefund.setMch_id(MCH_ID);
//        payRefund.setNonce_str(UUID.randomUUID().toString().replaceAll("-", ""));
//        payRefund.setOut_trade_no(order.getPayCode());//支付订单号
//        payRefund.setOut_refund_no(order.getRefundCode());//退款单号
//        payRefund.setTotal_fee(order.getPayPrice().multiply(new BigDecimal(100)).intValue());//原订单金额,单位:分;
//        payRefund.setRefund_fee(new BigDecimal(refundAmount).multiply(new BigDecimal(100)).intValue());//退款订单金额,单位:分;
//
//        SecapiPayRefundResult refundResult = PayMchAPI.secapiPayRefund(payRefund, PRIVATE_KEY);
//
//        // 微信支付退款接口返回数据验签;
//        if(refundResult.getSign_status() != null && refundResult.getSign_status()) {
//            LOGGER.warn("微信退款接口--接口请求状态(return_code):" + refundResult.getReturn_code());
//            LOGGER.warn("微信退款接口--接口请求状态(return_msg):" + refundResult.getReturn_msg());
//
//            // 退款信息提交成功;
//            if("SUCCESS".equals(refundResult.getReturn_code())) {
//                LOGGER.warn("微信退款接口--接口请求状态(result_code):" + refundResult.getResult_code());
//                LOGGER.warn("微信退款接口--接口请求状态(err_code):" + refundResult.getErr_code());
//                LOGGER.warn("微信退款接口--接口请求状态(err_code_des):" + refundResult.getErr_code_des());
//
//                return Boolean.TRUE;
//            }
//        }
//
//        return Boolean.FALSE;
//    }
//}